"""配置管理模块

提供统一的配置管理功能，从环境变量或配置文件中加载配置。
"""

import os
from pathlib import Path
from dotenv import load_dotenv
from utils.logger import get_logger

# 初始化日志记录器
logger = get_logger('config')

# 加载环境变量
env_path = Path(__file__).parent.parent / ".env"
if env_path.exists():
    logger.info(f"从 {env_path} 加载环境变量")
    load_dotenv(env_path)
else:
    logger.warning(f"环境变量文件 {env_path} 不存在，使用系统环境变量")

# 应用配置
class Settings:
    # 应用信息
    APP_NAME = "知识图谱问答系统"
    APP_VERSION = "1.0.0"
    APP_DESCRIPTION = "基于文档构建知识图谱并回答问题的系统"
    
    # 服务器配置
    HOST = os.getenv("HOST", "0.0.0.0")
    PORT = int(os.getenv("PORT", "8000"))
    DEBUG = os.getenv("DEBUG", "false").lower() == "true"
    
    # 文件上传配置
    UPLOAD_DIR = Path(os.getenv("UPLOAD_DIR", "uploads"))
    MAX_UPLOAD_SIZE = int(os.getenv("MAX_UPLOAD_SIZE", "10485760"))  # 默认10MB
    
    # 日志配置
    LOG_LEVEL = os.getenv("LOG_LEVEL", "info").lower()
    LOG_DIR = Path(os.getenv("LOG_DIR", "logs"))
    
    # LLM配置
    DEEPSEEK_API_KEY = os.getenv("DEEPSEEK_API_KEY", "")
    OPENAI_API_KEY = os.getenv("OPENAI_API_KEY", "")
    QWEN_API_KEY = os.getenv("QWEN_API_KEY", "")
    
    def __init__(self):
        # 创建必要的目录
        self.UPLOAD_DIR.mkdir(exist_ok=True)
        self.LOG_DIR.mkdir(exist_ok=True)
        
        # 日志输出配置信息
        logger.info(f"应用名称: {self.APP_NAME}")
        logger.info(f"应用版本: {self.APP_VERSION}")
        logger.info(f"调试模式: {self.DEBUG}")
        logger.info(f"上传目录: {self.UPLOAD_DIR}")
        logger.info(f"最大上传大小: {self.MAX_UPLOAD_SIZE} 字节")
        logger.info(f"日志级别: {self.LOG_LEVEL}")
        logger.info(f"日志目录: {self.LOG_DIR}")
        
        # 检查API密钥配置
        if not self.DEEPSEEK_API_KEY and not self.OPENAI_API_KEY and not self.QWEN_API_KEY:
            logger.warning("未配置任何LLM API密钥，将使用默认回退模型")

# 创建全局配置实例
settings = Settings()